package com.example.demo.service;

import com.example.demo.client.evt.cssmqry.role.QryRoleEvt;
import com.example.demo.client.vm.sysbasequery.RoleTreeVm;
import com.example.demo.domain.CsSmImportLogD;
import com.example.demo.web.rest.evt.IdEvt;
import com.example.demo.web.rest.evt.RelationEvt;
import com.example.demo.web.rest.evt.SaveRoleEvt;
import com.example.demo.web.rest.evt.UserRoleEvt;
import com.example.demo.web.rest.vm.ExportRolePermissionVm;
import com.example.demo.web.rest.vm.ExportRoleVm;
import com.example.demo.web.rest.vm.SaveRoleWithUserVm;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * 角色管理接口
 * @Author zmf
 * @Date 2018/12/14  10:14
 */
public interface RoleService {
    /**
     * 删除角色
     * @param roleId
     */
    void delRole(Long roleId);
    /**
     * 删除用户与角色关系
     * @param evt
     */
    void delUserRole(UserRoleEvt evt);
    /**
     * 保存角色信息
     * @param evt
     */
    Long saveRole(SaveRoleEvt evt) throws ParseException;
    /**
     * 添加角色和用户关系
     * @param evt
     */
    void addUserRole(RelationEvt evt);

    List<RoleTreeVm> getRoleTreeInfos(QryRoleEvt evt);

    List<ExportRoleVm> getRoleTreeInfosExport(QryRoleEvt evt);

    /**
     * 获取上级菜单下拉框值
     * */
    List<RoleTreeVm> getParentRoleTree(IdEvt evt);

    String importRole(List<Map<String, Object>> paramsList, CsSmImportLogD csSmImportLogD) throws Exception;


    /**
     * 保存角色关联用户
     */
    void saveRoleWithUser(SaveRoleWithUserVm vm);


    /**
     * 查询角色权限导出列表
     */
    List<ExportRolePermissionVm> getRolePermissionExport(QryRoleEvt evt);

    void addUserRoleNew(RelationEvt evt);

    Boolean queryRoleUser(Long id);

    Boolean queryRoleGroup(Long id);
}
